/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.model;

import com.db.SqlManager;
import com.exception.DataException;
import com.javabeans.Etiqueta;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Administrador
 */
public class AdminEtiqueta implements EtiquetaManager{
    private Connection c;
    public AdminEtiqueta(Connection c){
        this.c = c;
    }
    
    @Override
    public List<Etiqueta> getEtiquetaAll(int idCarrera) throws DataException {
        List<Etiqueta> corres = new ArrayList<Etiqueta>();
        try{
            corres = this.getEtiquetaS(0, idCarrera);
        }catch(DataException e){
            throw new DataException(" Error! AdminEtiqueta -> getEtiquetaAll(idCarrera) "+e.getMessage());
        }
        return corres;
    }
    
    @Override
    public List<Etiqueta> getEtiquetaDetalle(int idEtiqueta) throws DataException {
        List<Etiqueta> corres = new ArrayList<Etiqueta>();
        try{
            corres = this.getEtiquetaS(idEtiqueta,0);
        }catch(DataException e){
            throw new DataException(" Error! AdminEtiqueta -> getEtiquetaDetalle(idEtiqueta) "+e.getMessage());
        }
        return corres;
    }
    
    public List<Etiqueta> getEtiquetaS(int idEtiqueta, int idCarrera) throws DataException {
        List<Etiqueta> corres = new ArrayList<Etiqueta>(); 
        ResultSet rs = null;
        PreparedStatement preSt = null;

        try{
            String query = "SELECT IDETIQUETA";
            query += ", IDCARRERA";
            query += ", NOMBRE";
            query += ", DATE_FORMAT(FECHA,'%d/%m/%Y %H:%i:%s') FECHA";
            query += ", LINK";
            query += ", TITLE";
            query += " FROM ETIQUETA";
            if(idCarrera != 0)
                query += " WHERE IDCARRERA="+idCarrera;
            if(idEtiqueta != 0)
                query += " WHERE IDETIQUETA="+idEtiqueta;
            query += " ORDER BY NOMBRE";           
            preSt=c.prepareStatement(query);
            rs=preSt.executeQuery();
            while(rs.next()){
                Etiqueta co = new Etiqueta();
                co.setIdEtiqueta(rs.getInt("IDETIQUETA"));
                co.setIdCarrera(rs.getInt("IDCARRERA"));
                co.setNombre(rs.getString("NOMBRE"));
                co.setFecha(rs.getString("FECHA"));
                co.setLink(rs.getString("LINK"));
                co.setTitle(rs.getString("TITLE"));
                corres.add(co);
            }
        }catch(SQLException ex){
            throw new DataException(" -> getEtiquetaS(int idEtiqueta, int idCarrera) "+ex.getMessage());
        }finally{
            SqlManager.closeRs(rs);
            SqlManager.closePreSt(preSt);
        }
        return corres;
    }
    @Override
    public List<Etiqueta> getEtiquetaAllCant(int idCarrera) throws DataException {
        List<Etiqueta> corres = new ArrayList<Etiqueta>(); 
        ResultSet rs = null;
        PreparedStatement preSt = null;

        try{
            String  query = "SELECT C.IDETIQUETA";
                    query +=", C.IDCARRERA";
                    query +=", C.NOMBRE";
                    query +=", DATE_FORMAT(C.FECHA,'%d/%m/%Y %H:%i:%s') FECHA";
                    query +=", C.LINK";
                    query +=", C.TITLE";
                    query +=", IFNULL(COUNT(F.IDFORO),0) CANTIDAD";
                    query +=" FROM ETIQUETA C";
                    query +=" LEFT JOIN FORO  F ON C.IDETIQUETA=F.IDETIQUETA";
                    query +=" WHERE C.IDCARRERA="+idCarrera;
                    query +=" GROUP BY C.IDETIQUETA";           
            preSt=c.prepareStatement(query);
            rs=preSt.executeQuery();
            while(rs.next()){
                Etiqueta co = new Etiqueta();
                co.setIdEtiqueta(rs.getInt("IDETIQUETA"));
                co.setIdCarrera(rs.getInt("IDCARRERA"));
                co.setNombre(rs.getString("NOMBRE"));
                co.setFecha(rs.getString("FECHA"));
                co.setLink(rs.getString("LINK"));
                co.setTitle(rs.getString("TITLE"));
                co.setAux(rs.getString("CANTIDAD"));
                corres.add(co);
            }
        }catch(SQLException ex){
            throw new DataException(" Error! AdminEtiqueta -> getEtiquetaAllCant(idCarrera) "+ex.getMessage());
        }finally{
            SqlManager.closeRs(rs);
            SqlManager.closePreSt(preSt);
        }
        return corres;
    }

    
}
